home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / share / borejokes.lua < prev    next >
Encoding:
Text File  |  2005-07-16  |  7.3 KB  |  236 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. local usedJokes = {}
  4. local usedJokesCapacity = 3
  5. local peek = -1
  6. local function wasUsedRecently(n)
  7.     return isIn(n, usedJokes)
  8. end
  9. local function rememberUsed(n)
  10.     peek = math.mod(peek + 1, usedJokesCapacity)
  11.     usedJokes[peek] = n
  12. end
  13.  
  14. -- -----------------------------------------------------------------
  15. -- NOTE: uses 'small' and 'big' names for fishes
  16. local function selectJoke(n)
  17.     if not isReady(small) or not isReady(big) then
  18.         return
  19.     end
  20.  
  21.     switch(n){
  22.         [0] = function()
  23.             if level_getDepth() ~= 15 then
  24.                 if random(100) < 30 then
  25.                     addm(20, "ob-m-neverim")
  26.                 end
  27.                 if random(100) < 30 then
  28.                     addm(20, "ob-m-nedosataneme")
  29.                 end
  30.                 if random(100) < 30 then
  31.                     addm(20, "ob-m-naveky")
  32.                 end
  33.                 switch(random(4)){
  34.                     [0] = function()
  35.                         addv(random(15) + 5, "ob-v-jit0")
  36.                     end,
  37.                     [1] = function()
  38.                         addv(random(15) + 5, "ob-v-jit1")
  39.                     end,
  40.                     [2] = function()
  41.                         addv(random(15) + 5, "ob-v-musi")
  42.                     end,
  43.                     [3] = function()
  44.                         addv(random(15) + 5, "ob-v-klid")
  45.                     end,
  46.                 }
  47.             end
  48.         end,
  49.         [1] = function()
  50.             switch(random(3)){
  51.                 [0] = function()
  52.                     addv(20, "ob-v-neobvykle")
  53.                     addm(randint(5, 10), "ob-m-teorie")
  54.                 end,
  55.                 [1] = function()
  56.                     addv(20, "ob-v-mamto")
  57.                     addm(randint(10, 20), "ob-m-pokracuj")
  58.                     addv(5, "ob-v-napad")
  59.                     if random(100) < 40 then
  60.                         addm(6, "ob-m-zase")
  61.                     end
  62.                 end,
  63.                 [2] = function()
  64.                     addv(20, "ob-v-vyzkousej")
  65.                     addm(0, "ob-m-co")
  66.                     addv(randint(5, 15), "ob-v-alenic")
  67.                     if random(100) < 40 then
  68.                         addm(6, "ob-m-zase")
  69.                     end
  70.                 end,
  71.             }
  72.         end,
  73.         [2] = function()
  74.             switch(random(3)){
  75.                 [0] = function()
  76.                     addv(10, "ob-v-nebavi")
  77.                 end,
  78.                 [1] = function()
  79.                     addv(10, "ob-v-hrej")
  80.                 end,
  81.                 [2] = function()
  82.                     addv(10, "ob-v-sami")
  83.                 end,
  84.             }
  85.             switch(random(3)){
  86.                 [0] = function()
  87.                     addm(5, "ob-m-pst")
  88.                 end,
  89.                 [1] = function()
  90.                     addm(5, "ob-m-hlavu")
  91.                 end,
  92.                 [2] = function()
  93.                     addm(5, "ob-m-klid")
  94.                 end,
  95.             }
  96.         end,
  97.         [3] = function()
  98.             switch(random(4)){
  99.                 [0] = function()
  100.                     addm(10, "ob-m-jesteneco")
  101.                 end,
  102.                 [1] = function()
  103.                     addm(10, "ob-m-nedeje")
  104.                 end,
  105.                 [2] = function()
  106.                     addm(10, "ob-m-proc")
  107.                 end,
  108.                 [3] = function()
  109.                     addm(10, "ob-m-ceka")
  110.                 end,
  111.             }
  112.             switch(random(3)){
  113.                 [0] = function()
  114.                     addv(5, "ob-v-nerus")
  115.                 end,
  116.                 [1] = function()
  117.                     addv(5, "ob-v-nerus")
  118.                 end,
  119.                 [2] = function()
  120.                     addm(15, "ob-m-jetam")
  121.                     planBusy(big, true)
  122.                     addv(randint(5, 25), "ob-v-leskne")
  123.                     planBusy(big, false)
  124.                 end,
  125.             }
  126.         end,
  127.         [4] = function()
  128.             switch(random(5)){
  129.                 [0] = function()
  130.                     addv(10, "ob-v-prestavka")
  131.                 end,
  132.                 [1] = function()
  133.                     planDialog(TALK_INDEX_BOTH, 10, "ob-o-nebavi")
  134.                 end,
  135.                 [2] = function()
  136.                     planBusy(big, true)
  137.                     planBusy(small, true)
  138.                     planDialog(TALK_INDEX_BOTH, 10, "ob-o-halo")
  139.                     addv(10, "ob-v-nelekl")
  140.                     addm(6, "ob-m-mysleli")
  141.                     planBusy(big, false)
  142.                     planBusy(small, false)
  143.                 end,
  144.                 [3] = function()
  145.                     planBusy(big, true)
  146.                     addv(10, "ob-v-nehybes")
  147.                     planBusy(big, false)
  148.                     addm(10, "ob-m-resit")
  149.                     addv(5, "ob-v-akvarium")
  150.                 end,
  151.                 [4] = function()
  152.                     --TODO: shake room
  153.                     -- addset(Room.TrepatRoom, 1)
  154.                     addv(5, "ob-v-halo")
  155.                     adddel(5)
  156.                     -- addset(Room.TrepatRoom, 0)
  157.                 end,
  158.             }
  159.         end,
  160.         [5] = function()
  161.             switch(random(6)){
  162.                 [0] = function()
  163.                     planBusy(small, true)
  164.                     addm(5, "ob-m-tezky")
  165.                     planBusy(small, false)
  166.                 end,
  167.                 [1] = function()
  168.                     planBusy(big, true)
  169.                     addv(5, "ob-v-jidlo")
  170.                     planBusy(big, false)
  171.                 end,
  172.                 [2] = function()
  173.                     planBusy(small, true)
  174.                     addm(5, "ob-m-strach")
  175.                     planBusy(small, false)
  176.                 end,
  177.                 [3] = function()
  178.                     addm(10, "ob-m-jakdlouho")
  179.                     addv(5, "ob-v-zvykacka")
  180.                     room.zvykacka = true
  181.                 end,
  182.                 [4] = function()
  183.                     addv(5, "ob-v-ostani")
  184.                     addm(5, "ob-m-kdo")
  185.                     addv(5, "ob-v-kdoresi")
  186.                     addm(10, "ob-m-pravdepodobne")
  187.                 end,
  188.                 [5] = function()
  189.                     addm(10, "ob-m-ach")
  190.                     addv(5, "ob-v-copak")
  191.                     addm(15, "ob-m-lito")
  192.                     addv(5, "ob-v-colito")
  193.                     addm(5, "ob-m-vsechno")
  194.                     addv(5, "ob-v-covsechno")
  195.                     addm(1, "ob-m-uplnevse")
  196.                 end,
  197.             }
  198.         end,
  199.     }
  200. end
  201.  
  202. -- -----------------------------------------------------------------
  203. -- TODO: remember delayForJoke after restart
  204. local lastDialog = 0
  205. local delayForJoke = random(600) + 600
  206. local boredRate = 0
  207. local function boredUnits()
  208.     for index, unit in pairs(getUnitTable()) do
  209.         if not (unit:getAction() == "rest") then
  210.             boredRate = 0
  211.             return false
  212.         end
  213.     end
  214.     boredRate = boredRate + 1
  215.     return boredRate > delayForJoke
  216. end
  217.  
  218. function stdBoreJokeLoad()
  219.     lastDialog = game_getCycles()
  220.     dialogLoad("script/share/bore_", "sound/share/borejokes/")
  221. end
  222.  
  223. function stdBoreJoke()
  224.     if boredUnits() and no_dialog() then
  225.         boredRate = 0
  226.         delayForJoke = delayForJoke * randint(100, 150) / 100
  227.         n = random(6)
  228.         while wasUsedRecently(n) do
  229.             n = random(6)
  230.         end
  231.         rememberUsed(n)
  232.         selectJoke(n)
  233.     end
  234. end
  235.  
  236.